package square;
import javax.sound.sampled.*;
import java.io.File;
import java.io.IOException;
public class AudioPlayer {
    private Clip clip;//用于存储音频
    public void play(String filePath) {
        try {
            File file = new File(filePath);//创建一个File对象表示音频文件
            AudioInputStream audioStream = AudioSystem.getAudioInputStream(file);//获取音频输入流
            AudioFormat format = audioStream.getFormat();//获取音频格式
            DataLine.Info info = new DataLine.Info(Clip.class, format);//创建一个DataLine.Info对象，指定要获取的音频类型和音频格式
            clip = (Clip) AudioSystem.getLine(info);//从音频系统中获取音频
            clip.open(audioStream);//打开音频剪辑，准备播放
            clip.start();//开始播放音频方法
        }catch (UnsupportedAudioFileException|IOException|LineUnavailableException e){
            e.printStackTrace();
        }
    }
    public void loop(String filePath) {
        play(filePath);//先播放一次音频
        clip.loop(Clip.LOOP_CONTINUOUSLY);//设置音频剪辑循环播放
    }
    //停止播放音频
    public void stop() {
        //如果音频 存在且正在播放
        if (clip!=null&&clip.isRunning()) {
            clip.stop();
        }
    }
    public void start(){
        if (clip!=null&&!clip.isRunning()) {
            clip.start();
        }
    }

}

/*play(String filePath)方法：
接收一个字符串参数filePath，表示音频文件的路径。
使用File类创建一个表示音频文件的对象。
通过AudioSystem.getAudioInputStream(file)获取音频输入流。
获取音频格式（AudioFormat）。
创建一个DataLine.Info对象，指定需要获取的数据行（在这里是Clip）和音频格式。
使用AudioSystem.getLine(info)获取一个Clip对象，用于播放音频。
打开音频剪辑并开始播放。
捕获可能抛出的异常（UnsupportedAudioFileException、IOException、LineUnavailableException），并打印堆栈跟踪。*/
/*loop(String filePath)方法：
接收一个字符串参数filePath，表示要循环播放的音频文件的路径。
调用play(filePath)方法先播放一次音频。
使用clip.loop(Clip.LOOP_CONTINUOUSLY)设置音频剪辑循环播放。*/
/*stop()方法：
检查clip对象是否不为null且正在运行（clip.isRunning()返回true）。
如果条件满足，则停止播放音频。*/
/*start()方法：
检查clip对象是否不在运行状态（!clip.isRunning()返回true）。
如果条件满足，则重新开始播放音频。*/
